The present invention relates to file systems, and more particularly, to enhancements to the functionality of file systems.
A hard disk drive may occasionally fail to provide accurate data to a user or application as a result of data block corruption. Without a reliable backup of the data, or the implementation of a Redundant Array of Inexpensive Disks (RAID) level that provides fault tolerance, data can be irretrievably lost. Therefore, it would be desirable to provide a system that can handle data block corruption more robustly.
A file system is a technique for storing and organizing computer files to facilitate the process of locating the files. File system software can be used to manage data blocks that are stored on a data storage device, such as a hard disk drive. The file system organizes the data blocks into files and directories. The file system also keeps track of which data blocks belong to which file and which data blocks are not being used.
The file systems employed in computer systems are logical structures defined by monolithic, single modules of code. The operating parameters of the file systems, such as block size or the use of journaling, are fixed at compile time and cannot be changed without accessing the source code of the specific file system module. Also, the operating parameters are typically not optimized for the data being stored or the storage system's usage patterns.
The application-programming interface (API) that a hard disk drive provides to an operating system (OS) defines a standard set of functions used to access the hard disk drive. The API is not extensible and is independent of the file systems that is utilized on the hard disk drive. Therefore, it would be desirable to have a file system that allows for greater flexibility at run-time.